package com.sybil.ot.dominio;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Embeddable
public class CorreoPK implements Serializable {

   private String claveFlujo;
   private int numeroSolicitud;
   private int numeroDetalle;
   private int numeroCorreo;

   public CorreoPK() {
   }

   public CorreoPK(String claveFlujo, int numeroSolicitud, int numeroDetalle, int numeroCorreo) {
      this.claveFlujo = claveFlujo;
      this.numeroSolicitud = numeroSolicitud;
      this.numeroDetalle = numeroDetalle;
      this.numeroCorreo = numeroCorreo;
   }

   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 4, message = "La Clave debe tener entre 1 y 4 caracteres")
   @Column(name = "COFL_FLUJ_CLAVE")
   public String getClaveFlujo() {
      return claveFlujo;
   }

   public void setClaveFlujo(String claveFlujo) {
      this.claveFlujo = claveFlujo;
   }

   @Basic(optional = false)
   @NotNull
   @Column(name = "COFL_HIFL_NUMERO")
   public int getNumeroSolicitud() {
      return numeroSolicitud;
   }

   public void setNumeroSolicitud(int numeroSolicitud) {
      this.numeroSolicitud = numeroSolicitud;
   }

   @Basic(optional = false)
   @NotNull
   @Column(name = "COFL_DEHF_NUMERO")
   public int getNumeroDetalle() {
      return numeroDetalle;
   }

   public void setNumeroDetalle(int numeroDetalle) {
      this.numeroDetalle = numeroDetalle;
   }

   @Basic(optional = false)
   @NotNull
   @Column(name = "COFL_NUMERO")
   public int getNumeroCorreo() {
      return numeroCorreo;
   }

   public void setNumeroCorreo(int numeroCorreo) {
      this.numeroCorreo = numeroCorreo;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (claveFlujo != null ? claveFlujo.hashCode() : 0);
      hash += (int) numeroSolicitud;
      hash += (int) numeroDetalle;
      hash += (int) numeroCorreo;
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof CorreoPK)) {
         return false;
      }
      CorreoPK other = (CorreoPK) object;
      if ((this.claveFlujo == null && other.claveFlujo != null) || (this.claveFlujo != null && !this.claveFlujo.equals(other.claveFlujo))) {
         return false;
      }
      if (this.numeroSolicitud != other.numeroSolicitud) {
         return false;
      }
      if (this.numeroDetalle != other.numeroDetalle) {
         return false;
      }
      if (this.numeroCorreo != other.numeroCorreo) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "CorreoPK[ claveFlujo=" + claveFlujo + ", numeroSolicitud=" + numeroSolicitud 
              + ", numeroDetalle=" + numeroDetalle + ", numeroCorreo=" + numeroCorreo + " ]";
   }
}
